package mSecretaria;

import java.util.List;
import java.sql.ResultSet;
import java.util.ArrayList;

import myUtils.DBUtils;
import myUtils.IModelo;

import play.db.DB;
import play.db.jpa.Model;
import myUtils.*;

public class MBairro extends Model implements IModelo {
	
	//Atributos
	
	private int codBairro;
	private String nome;
	
	
	
	//Construtores
	
	public MBairro(int aCodBairro) throws Exception
	{
		ResultSet rs;
		String strQuery = "Select * From Bairro Where Bairro.CodBairro = " + aCodBairro;
		
		try
		{
			rs = DB.executeQuery(strQuery);
			
			
			if(rs == null)
				throw new Exception("Bairro não cadastrado!");
			
			while (rs.next())
			{
				this.codBairro	= rs.getInt("CodBairro");
				this.nome	    = rs.getString("Nome");
			}
			
		}
		catch(Exception e)
		{
			throw new Exception(e.getMessage());
		}
		
		
	}
	
	
	public MBairro(String aNome)
	{
		this.codBairro = 0;
		this.nome      = aNome;
	}
	
	
	private MBairro(int aCodBairro,String aNome)
	{
		this.codBairro 	= aCodBairro;
		this.nome 	  	= aNome;
	}
	
	
	//Métodos de acesso
	
	public String getNome() {
		return nome;
	}


	public void setNome(String nome) {
		
		this.nome = nome;
		
	}


	public int getCodBairro() {
	
		return this.codBairro;
	}
	
	
	public void update() throws Exception {
		
		if(this.codBairro == 0)
		{
			this.insert();
		}
		else
		{	
			String strQuery = "Update Bairro set Nome = '" + this.nome + "' Where Bairro.CodBairro = " + this.codBairro;
			
			try
			{
				DB.execute(strQuery);			
			}
			catch(Exception e)
			{
				throw new Exception(e.getMessage());
			}
		}
		
	}

	public void insert() throws Exception {
		
		ResultSet rs;
		String strQuery2 = "Select CodBairro from bairro Where Nome = '" + this.nome + "'";
		
		String strQuery = "Insert Into Bairro(Nome) Values ('" + this.nome + "')";
		
		try
		{
			DB.execute(strQuery);
			rs = DB.executeQuery(strQuery2);
			
			while(rs.next())
			{
				this.codBairro = rs.getInt("CodBairro");
			}
						
		}
		catch(Exception e)
		{
			throw new Exception(e.getMessage() + "\n Comando: " + strQuery + "|" + strQuery2);
		}
	}
	
	public void excluir() throws Exception {
		
		if(this.codBairro != 0)
		{
		
			String strQuery = "Delete From Bairro Where Bairro.CodBairro = " + this.codBairro;
			
			try
			{
				DB.execute(strQuery);
				this.codBairro = 0;
			}
			catch(Exception e)
			{
				throw new Exception(e.getMessage() + "\n Comando: " + strQuery);
			}
		}
	}

	public static List<MBairro> select(int aCodBairro, String aNome) throws Exception {
		
		ResultSet rs;
		String nome;
		int codBairro;
		List<MBairro> retorno  = new ArrayList<MBairro>();
		String strQuery = "Select * From Bairro Where Bairro.CodBairro > 0" ;

		if(aCodBairro > 0)
		{
			strQuery += " and Bairro.CodBairro = " + aCodBairro;
		}
		
		
		strQuery += " and Bairro.Nome Like '" + aNome + "%'";
		
		
		try
		{
			rs = DB.executeQuery(strQuery);	
			
			while (rs.next())
			{
				codBairro 	= rs.getInt("CodBairro");
				nome		= rs.getString("Nome");
				
				MBairro bairro = new MBairro(codBairro,nome);
				retorno.add(bairro);
				
			}	
			
		}
		catch(Exception e)
		{
			throw new Exception(e.getMessage() + "\n Comando: " + strQuery);
		}
		
		return retorno;

	}

}
